﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DiskInspector.Model.MetaDataAttributes;

namespace DiskInspector.Model.FileRecordStructure
{
    public class FileRecordHead
    {
        [FieldLength(ByteLength = 4)]
        public char[] Signature { get; set; }

        [FieldLength(ByteLength = 2)]
        public short OffsetToUpdateSequence { get; set; }

        [FieldLength(ByteLength = 2)]
        public short UpdateSequenceSizeInWords { get; set; }

        [FieldLength(ByteLength = 8)]
        public long LogFileSequenceNumber { get; set; }

        [FieldLength(ByteLength = 2)]
        public short SequenceNumber { get; set; }

        [FieldLength(ByteLength = 2)]
        public short HardLinkCount { get; set; }

        [FieldLength(ByteLength = 2)]
        public short OffsetToTheFirstAttribute { get; set; }

        [FieldLength(ByteLength = 2)]
        public short Flags { get; set; }

        [FieldLength(ByteLength = 4)]
        public int LogicalSizeOfThisRecord { get; set; }

        [FieldLength(ByteLength = 4)]
        public int PhysicalSizeOfThisRecord { get; set; }

        [FieldLength(ByteLength = 8)]
        public long FileReferenceToTheBaseRecord { get; set; }

        [FieldLength(ByteLength = 2)]
        public short NextAttributeID { get; set; }

        [FieldLength(ByteLength = 2)]
        public byte[] Boundary { get; set; }

        [FieldLength(ByteLength = 4)]
        public int FileRecordID { get; set; }

        [FieldLength(ByteLength = 2)]
        public short UpdateSequenceNumber { get; set; }

        [FieldLength(ByteLength = 4)]
        public byte[] UpdateSequenceArray { get; set; }

        [FieldLength(ByteLength = 2)]
        public byte[] Reserved { get; set; }


    }
}
